package ar.com.binarit


import grails.util.Environment
import grails.validation.ValidationException

import org.codehaus.jettison.json.JSONObject

import ar.com.binarit.entities.Comentario
import ar.com.binarit.entities.TipoEvento

class ViajesController extends AbstractController{
	
	def mercadoPagoService

    def index() {
		getMapaDatos(null) + [equipos:equipos]
	}
	
	def show(){
		def viajeInstance = viajeService.obtenerViaje(params.id)
		String checkoutURL
		def mercadoPagoInstance
		if (viajeInstance.puedeUnirse(usuarioLogueado)){
			String initPoint = ""
			mercadoPagoInstance = mercadoPagoService.mercadoPago
			if (Environment.current == Environment.PRODUCTION){
				initPoint = "init_point"
			}else{
				initPoint = "sandbox_init_point"
			}
			
			int valor = viajeInstance?.precioAsiento as int
			def serverURL = grailsApplication?.config?.grails?.serverURL
			try{
				JSONObject preference = mercadoPagoInstance.createPreference(
					"{'items':[{'title':'${viajeInstance.id}-${usuarioLogueado.id} # Viaje por ${valor} pesitos','quantity':1,'currency_id':'ARS','unit_price':${valor}}],'payer': { 'name': 'XXXXXX', 'surname': 'YYYYYYYY', 'email': '${usuarioLogueado.email}' }}"
				)
				checkoutURL = preference.getJSONObject("response").getString(initPoint)
			}catch(Exception ex){
				println ex
			}
		}
	
		def result = [viajeInstance: viajeInstance, mp:mercadoPagoInstance, checkoutURL:checkoutURL]
		result.putAll(getMapaDatos(viajeInstance))
		result
	}
	
	def unirseAViaje = {
		def result = true
		try{
			def viajeInstance = viajeService.obtenerViaje(params.viajeId?:params.id)
			result = viajeService.unirseAViaje(viajeInstance, usuarioLogueado)
		}catch (ValidationException e) {
			result = false
		}
		render "ok"
	}
	
	def desunirseAViaje = {
		def result = true
		try{
			def viajeInstance = viajeService.obtenerViaje(params.viajeId?:params.id)
			result = viajeService.eliminarUsuarioAViaje(viajeInstance, usuarioLogueado)
		}catch (ValidationException e) {
			result = false
		}
		if (result){
			render "Se borro exitosamente"
		}else{
			render "No se pudo realizar la desunion a viaje"
		}
	}

}
